#include <stdio.h>

int Add(int x,int y){
	// return x+y;
	printf("%d\n", x+y);
}
int Sub(int x,int y){
	// return x-y;
	printf("%d\n", x-y);
}

typedef int (*pfun_t2[])(int ,int);

int main(){

	int (*pfunArr[2])(int ,int) = {Add,	Sub};//方法一	
	pfun_t2 pfunArr2 = {Add, Sub};//方法二
	pfunArr[0](6, 3);
	pfunArr[1](6, 3);
	pfunArr2[0](9, 3);
	pfunArr2[1](9, 3);


	char charArr[] = "qwer";
	printf("%p, %d, %X, %s, %d\n", charArr, charArr, charArr, charArr, sizeof charArr);
	printf("%p, %d, %X, %d\n", &charArr[0], &charArr[0], &charArr[0], sizeof &charArr[0]);
	
	char * p_charArr = charArr;
	printf("%p, %d, %X, %s, %d\n", p_charArr, p_charArr, p_charArr, p_charArr, sizeof p_charArr);

	int intArr[] = {1, 2, 3, 4};
	int * p_intArr = intArr;
	printf("%p, %d, %X, %s, %d\n", p_intArr, p_intArr, p_intArr, p_intArr, sizeof p_intArr);
	// 不能按 %s 格式打印，乱码。


	// 可以
	// char * p = charArr + 2;
	// printf("%c\n", *p);

	// 不行
	// int i = charArr + 2;
	// printf("%d\n", i);

	// 不行
	// int * p1 = charArr + 2;
	// printf("%d\n", *p1);



	char charArr2[] = "我好生气";
	printf("%p, %d, %X, %s, %d\n", charArr2, charArr2, charArr2, charArr2, sizeof charArr2);
	// printf("%c\n", charArr2[0]); // 多字节的数组，不能这么做。每个汉字utf-8 下3个字节。
	// printf("%s\n", charArr2[0]+charArr2[1]+charArr2[2]); // 也不行。
	char * p_charArr2 = charArr2;
	printf("%p, %d, %X, %s, %d\n", p_charArr2, p_charArr2, p_charArr2, p_charArr2, sizeof p_charArr2);
  return 0;
}